Keep CALM and CRDT on
CRDTの保証はデータ更新にのみフォーカスが当てられていて、データのReadは安全ではない クエリの満たすべき性質
Safety: Queries should be sequentially consistent, regardless of the replica at which they are evaluated
Efficiency: Queries should be evaluated locally without coordination whenever possible
whenever possible...kekeho.icon
Simplicity: The query model should be easy for developers to reason about.
ローカル状態がグローバル状態と等しいことを保証できない限り、ローカル状態がグローバル状態と等しいとはいえない。non-monotonicなクエリだ! Monotone query: a query $ Q is monotone if $ \forall i, j \in D: i \le j, Q(i) \Rightarrow Q(j) $ DはState-based CRDTの取りうる状態集合
任意の状態i, jについて、iがjよりも小さいならば、クエリ$ Q(i)が真ならば$ Q(j)も真となる
CRDTの状態が進むにつれて、クエリの結果は偽から真になることはあっても、真から偽に変わることはないkekeho.icon
Safety, Efficiency, Simplicityを満たす
CRDTsでは、Non-MonotonicなQueryのみを順序付けてやればよい